package com.pubinfo.passbook.common.model.dto.open;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

@Data
@NoArgsConstructor
public class WiteoffSubitemData implements Serializable {
  private static final long serialVersionUID = 1L;
  @ApiModelProperty(hidden = true)
  public String otherSystemDetailId;
  
  @ApiModelProperty(value = "用途编码 非必须 可由业务提供，经济事项存在用途时必填", hidden = true)
  public String usageCode = "U228";
  
  @ApiModelProperty(value = " 经济事项存在用途时必填 ", hidden = true)
  public String usageName = "过路过桥";
  
  @ApiModelProperty(value = "列账属性 必须 选项：" +
      "1-是：使用成本/资本预算，2-否：不使用成本/资本预算，" +
      "3-否：不使用成本预算（统付） 银行扣款挂账和往来转销送2，发票挂账送1", hidden = true)
  @NotNull
  public Integer budgetType;
  
  @ApiModelProperty(value = "子单金额 通过审核规则计算得出")
  public BigDecimal sum;
  
  @ApiModelProperty(value = "摘要", hidden = true)
  public String desc;
  
  @ApiModelProperty(value = "当进项税为暂估时才需要填")
  public BigDecimal inputTaxSum;
  @ApiModelProperty(value = "一单清专用,使用一单清模式时，需要把sum字段的值同时传到这个字段里面")
  public BigDecimal priceSum;
  @ApiModelProperty(value = "预算指标编码 非必须 可以通过“获取预算指标模板”接口获取  银行扣款挂账&发票挂账=CW1121；\n" +
      "往来转销=null", hidden = true)
  public String budgetItemCode;
  
  @ApiModelProperty(value = "预算指标名称 银行扣款挂账=车辆使用及租赁费 \n", hidden = true)
  public String budgetItemName;
  @ApiModelProperty(value = "预算责任中心编码 非必须 可以通过“获取下级预算组织” 接口获取   财智传")
  public String budgetOrgCode;
  
  @ApiModelProperty(value = "预算责任中心名称")
  public String budgetOrgName;
  @ApiModelProperty(value = "记账成本中心编码 非必须 “列账属性”为1必填 根据财智传的预算责任中心编码从主数据取")
  public String sapCostCenterCode;
  
  @ApiModelProperty(value = "记账成本中心名称 非必须 “列账属性”为1必填")
  public String sapCostCenterName;
  
  @ApiModelProperty(value = "利润中心编码 非必须 “列账属性”为2必填 可从SAP获取基础数据")
  public String profitsCenterCode;
  
  @ApiModelProperty(value = "利润中心名称 非必须 “列账属性”为2必填")
  public String profitsCenterName;
  
  @ApiModelProperty(value = "活动预算编码\t非必须\t可以通过“获取活动预算”接口获取", hidden = true)
  private String budgetProjectCode;
  
  @ApiModelProperty(value = "活动预算名称", hidden = true)
  private String budgetProjectName;
  
  @ApiModelProperty(value = "ICT编码\t非必须\t可以通过“获取活动预算”接口获取", hidden = true)
  private String ictCode;
  
  @ApiModelProperty(value = "ICT名称\t非必须\t可以通过“获取活动预算”接口获取", hidden = true)
  private String ictName;
  
  @ApiModelProperty(value = "借方会计科目编码\t非必须\t可从SAP获取基础数据 银行扣款挂账&往来转销=G000343924；\n" +
      "发票挂账=6400162005", hidden = true)
  private String debitAccountCode;
  
  @ApiModelProperty(value = "借方会计科目名称 根据借方会计科目编码在主数据里取", hidden = true)
  private String debitAccountName;
  
  @ApiModelProperty(value = "贷方科目编码\t非必须\t(税费计提时使用，当是税费计提时，借贷方都在子单", hidden = true)
  private String creditAccountCode;
  
  @ApiModelProperty(value = "贷方科目名称", hidden = true)
  private String creditAccountName;
  
  @ApiModelProperty(value = "贷方科目类型\t非必须\t税费时选输(1-总账、2-供应商、3-客户)，当存在科目时，科目类型必填", hidden = true)
  private Byte creditAccountType;
  
  @ApiModelProperty(value = "借贷标识\t非必须\t选项：1-借，0-贷", hidden = true)
  private Byte isDebiisDebitCredit;
  
  @ApiModelProperty(value = "借方科目类型\t非必须\t选项(1-总账、2-供应商、3-客户) ，当存在科目时，科目类型必填  银行扣款挂账&往来转销=2；\n" +
      "发票挂账=1\n", hidden = true)
  private Integer debitAccountType;
  
  @ApiModelProperty(value = "订单号", hidden = true)
  private String orderNo;
  
  @ApiModelProperty(value = "Wbs编号", hidden = true)
  private String wbsNo;
  
  @ApiModelProperty(value = "Wbs名称", hidden = true)
  private String wbsName;
  
  @ApiModelProperty(value = "网络元素编号", hidden = true)
  private String networkElementCode;
  
  @ApiModelProperty(value = "网络元素名称", hidden = true)
  private String networkElementName;
  
  @ApiModelProperty(value = "修理费明细编码", hidden = true)
  private String fixFeeDetailCode;
  
  @ApiModelProperty(value = "修理费明细名称", hidden = true)
  private String fixFeeDetailName;
  
  @ApiModelProperty(value = "费用明细编码", hidden = true)
  private String chargeCode;
  
  @ApiModelProperty(value = "费用明细名称", hidden = true)
  private String chargeName;
  
  @ApiModelProperty(value = "数量", hidden = true)
  private Integer count;
  
  @ApiModelProperty(value = "单价", hidden = true)
  private BigDecimal price;
  
  @ApiModelProperty(value = "单位", hidden = true)
  private String unit;
  
  @ApiModelProperty(value = "专业类别", hidden = true)
  private String specialty;
  
  @ApiModelProperty(value = "税种编码", hidden = true)
  private String taxFeeCode;
  
  @ApiModelProperty(value = "税务期间", hidden = true)
  private String taxFeePeriod;
  
  @ApiModelProperty(value = "客户编码", hidden = true)
  private String clientGroupCode;
  
  @ApiModelProperty(value = "客户名称", hidden = true)
  private String clientGroupName;
  
  @ApiModelProperty(value = "产品编码", hidden = true)
  private String productGroupCode;
  
  @ApiModelProperty(value = "产品名称", hidden = true)
  private String productGroupName;
  
  @ApiModelProperty(value = "低值易耗编码", hidden = true)
  private String bizFeeDetailCode;
  
  @ApiModelProperty(value = "低值易耗名称", hidden = true)
  private String bizFeeDetailName;
  
  @ApiModelProperty(value = "人员类别", hidden = true)
  private String staffTypeCode;
  
  @ApiModelProperty(value = "借款人帐号", hidden = true)
  private String borrowPersonAccount;
  
  @ApiModelProperty(value = "借款人名称", hidden = true)
  private String borrowPersonName;
  
  @ApiModelProperty(value = "借款人电话", hidden = true)
  private String borrowPersonTel;
  
  @ApiModelProperty(value = "当为借款业务时选填，不填系统根据用途推导 格式2014/12/2", hidden = true)
  private Date borrowPersonDate;
  
  @ApiModelProperty(value = "借款人部门", hidden = true)
  private String deptName;
  
  @ApiModelProperty(value = "默认CNY  枚举项：  CNY   HKD  JPY   USD 支持业务类型为借款、经济事项100414", hidden = true)
  private String currency;
  
  @ApiModelProperty(value = "默认1 币种对应的汇率   支持业务类型为借款、经济事项100414", hidden = true)
  private BigDecimal exchangeRate;
  
  @ApiModelProperty(value = "币种金额\t非必须\t默认和报账金额一样 币种对应的金额   支持业务类型为借款、经济事项100414", hidden = true)
  private BigDecimal currencySum;
  
  @ApiModelProperty(value = "特殊总账标识", hidden = true)
  private String specialTag;
  
  @ApiModelProperty(value = "备选统驭科目编码", hidden = true)
  private String preAccountCode;
  
  @ApiModelProperty(value = "备选统驭科目名称", hidden = true)
  private String preAccountName;
  
  @ApiModelProperty(value = "费用类型\t非必须\t即挂即付事项必须", hidden = true)
  private String feeType;
  
  @ApiModelProperty(value = "支付类型\t非必须\t即挂即付事项必须", hidden = true)
  private String payType;
  
  @ApiModelProperty(value = "付款条件\t非必须\t即挂即付事项必须", hidden = true)
  private String payCondition;
  
  @ApiModelProperty(value = "款项名称\t非必须\t即挂即付事项必须", hidden = true)
  private String fundName;
  
  @ApiModelProperty(value = "报账类型\t非必须\t即挂即付事项必须", hidden = true)
  private String cmdType;
  
  @ApiModelProperty(value = "履约计划\t非必须\t即挂即付事项必须", hidden = true)
  private String bili;
  
  @ApiModelProperty(value = "税金\t非必须\t即挂即付事项必须")
  private BigDecimal taxSum;
  
  @ApiModelProperty(value = "不含税金额\t非必须\t即挂即付事项必须")
  private BigDecimal noTaxSum;
  
  @ApiModelProperty(value = "发票金额\t非必须\t即挂即付事项必须")
  private BigDecimal invoiceSum;
  
  @ApiModelProperty(value = "非必须 预计付款日期", hidden = true)
  private String expectedpayDate;
  
  @ApiModelProperty(value = "往来类型编码", hidden = true)
  private String contactDetailInfoCode;
  
  @ApiModelProperty(value = "往来类型名称", hidden = true)
  private String contactDetailInfoName;
  
  @ApiModelProperty(value = "摊销受益期-开始年月\t非必须\t格式为：YYYYMM", hidden = true)
  private String amortizeBeginDate;
  
  @ApiModelProperty(value = "摊销受益期-结束年月\t非必须\t格式为：YYYYMM", hidden = true)
  private String amortizeEndDate;
  
  @ApiModelProperty(value = "资产分类编码", hidden = true)
  private String assetsTypeCode;
  
  @ApiModelProperty(value = "资产分类名称", hidden = true)
  private String assetsTypeName;
  
  @ApiModelProperty(value = "开始日期\t可选\tyyyy-MM-dd", hidden = true)
  private String beginDate;
  
  @ApiModelProperty(value = "结束日期\t可选\tyyyy-MM-dd", hidden = true)
  private String endDate;
  
  @ApiModelProperty(value = "出发地省\t可选\t如：广东省", hidden = true)
  private String startProvince;
  
  @ApiModelProperty(value = "出发地市\t可选\t如：广州市", hidden = true)
  private String startCity;
  
  @ApiModelProperty(value = "出发县", hidden = true)
  private String startCountry;
  
  @ApiModelProperty(value = "目的地省\t可选\t如：广东省", hidden = true)
  private String targetProvince;
  
  @ApiModelProperty(value = "目的地市\t可选\t如：广州市", hidden = true)
  private String targetCity;
  
  @ApiModelProperty(value = "目的县", hidden = true)
  private String targetCountry;
  
  @ApiModelProperty(value = "出差人数", hidden = true)
  private Integer travellerAmount;
  
  @ApiModelProperty(value = "交通工具编码 可选CL130 >飞机 CL1302 >火车 CL1303  >轮船  CL1309  >其他 CL1305 >公派汽车", hidden = true)
  private String majorVehicle;
  
  @ApiModelProperty(value = "交通工具名称", hidden = true)
  private String majorVehicleName;
  
  @ApiModelProperty(value = "交通工具编码(回)", hidden = true)
  private String majorVehicleBack;
  
  @ApiModelProperty(value = "交通工具编码(回) 名称", hidden = true)
  private String majorVehicleBackName;
  
  @ApiModelProperty(value = "市内交通费", hidden = true)
  private BigDecimal sundryCharge;
  
  @ApiModelProperty(value = "住宿费（不含税）", hidden = true)
  private BigDecimal residenceFee;
  
  @ApiModelProperty(value = "伙食补贴", hidden = true)
  private BigDecimal dieteticSubsidyFee;
  
  @ApiModelProperty(value = "其他费用", hidden = true)
  private BigDecimal miscFee;
  
  @ApiModelProperty(value = "城市间交通费", hidden = true)
  private BigDecimal transportationFee;
  
  @ApiModelProperty(value = "出差类型编码\t可选\tCL0401 参加会议  CL0403 外出事访 CL0404 调研 CL0406 其它 CL0402 学习培训", hidden = true)
  private String type;
  
  @ApiModelProperty(value = "实物编号或卡片号", hidden = true)
  private String estateCode;
  
  @ApiModelProperty(value = "实物名称", hidden = true)
  private String estateName;
  
  @ApiModelProperty(value = "地点类别\t可选\tZH0301营业网点 ZH0306主机托管机房  ZH0302交换母局机房  ZH0303接入网机房  ZH0305办公楼宇  ZH0398其他 ZH0304小灵通基站 ZH0307电话亭  ZH0399综合  ZH0308信息化小区机房 ZH0309 3G基站及机房", hidden = true)
  private String estateType;
  
  @ApiModelProperty(value = "业务类型(房屋租赁费表单)\t可选\t02            C网 0002  非C网", hidden = true)
  private String cwebBizType;
  
  @ApiModelProperty(value = "是否反记账\t可选\t1：是", hidden = true)
  private Byte isOppositeLedger;
  
  @ApiModelProperty(value = "标的物", hidden = true)
  private String subjectMatter;
  
  @ApiModelProperty(value = "实际出差天数", hidden = true)
  private Integer onWayDay;
  
  @ApiModelProperty(value = "实际培训天数", hidden = true)
  private Integer trainingDay;
  
  @ApiModelProperty(value = "是否出差\t　\t（1：是；0:否）", hidden = true)
  private Byte isTravel;
  
  @ApiModelProperty(value = "培训费", hidden = true)
  private BigDecimal trainingCharge;
  
  @ApiModelProperty(value = "开支事项\t　\t(1: 参加培训；2：主办培训)", hidden = true)
  private Byte expenditureItems;
  
  @ApiModelProperty(value = "招待费标准(人均)", hidden = true)
  private BigDecimal hospitalityStandard;
  
  @ApiModelProperty(value = "招待人数", hidden = true)
  private Integer hospitalityPeople;
  
  @ApiModelProperty(value = "会议名称", hidden = true)
  private String meetingName;
  
  @ApiModelProperty(value = "会议类别\t　\t  会议费表单专用(送编码)  HY0201全局性(一类) HY0202专业性(二类)  HY0203部门性(三类)  HY0204特殊性(四类)", hidden = true)
  private String meetingType;
  
  @ApiModelProperty(value = "会议地点\t　\t  会议费表单专用", hidden = true)
  private String meetingLocation;
  
  @ApiModelProperty(value = "会议范围\t　\t20190122新增 会议费表单专用(送编码)  HY0401 全国会议  HY0402 全省会议  HY0403 地市会议  HY0404 区县会议  HY0405 集团本部  HY0406 省本部 HY0407 市本部", hidden = true)
  private String meetingScope;
  
  @ApiModelProperty(value = "主办部门\t　\t  会议费表单专用", hidden = true)
  private String inChargeDepartment;
  
  @ApiModelProperty(value = "主办人\t　\t  会议费表单专用", hidden = true)
  private String inChargePerson;
  
  @ApiModelProperty(value = "会议起始日 会议费表单专用 格式yyyy-MM-dd", hidden = true)
  private String meetingBeginDate;
  
  @ApiModelProperty(value = "会议结束日\t　\t  会议费表单专用 格式yyyy-MM-dd", hidden = true)
  private String meetingEndDate;
  
  @ApiModelProperty(value = "参会人数\t　\t  会议费表单专用", hidden = true)
  private Integer participantAmount;
  
  @ApiModelProperty(value = "费用细项   会议费表单专用  HY1001 住宿费  HY1002 伙食费  HY1003 场租费  HY1098 其他费用", hidden = true)
  private String feeDetail;
  
  @ApiModelProperty(value = "(预计)还款日期\t　\tyyyy-MM-dd", hidden = true)
  private String expectedpayCleanDate;
  
  @ApiModelProperty(value = "自购飞机票 机票+燃油\t　\t一单清专用或国内差旅员工", hidden = true)
  private BigDecimal aircraftSum;
  
  @ApiModelProperty(value = "自购飞机票 机建+保险\t　\t一单清专用或国内差旅员工", hidden = true)
  private BigDecimal insuranceSum;
  
  @ApiModelProperty(value = "自购火车票\t　\t一单清专用或国内差旅员工", hidden = true)
  private BigDecimal trainSum;
  
  @ApiModelProperty(value = "实名车船票\t　\t一单清专用或国内差旅员工", hidden = true)
  private BigDecimal vehicleorshipSum;
  
  @ApiModelProperty(value = "车辆使用耗油类型(车辆使用费表单)\t可选\t100 汽油 101 柴油 102 天然气", hidden = true)
  private Integer oilType;
  
  @ApiModelProperty(value = "耗用类型（车辆使用费表单）\t可选\tNY6100   生产用油 NY6110  ---油机用油费  NY610002  ---维护车辆用油 NY610003  ---综合服务营销车辆用油 NY6200    ---非生产用油  NY620001  ---管理层公务车辆用油 自购飞机票电票\t　\tBigDecimal \t　\t自购飞机票电票\t　\t一单清专用或国内差旅员工", hidden = true)
  private String utype;
  
  @ApiModelProperty(value = "自购飞机票电票\t　\t一单清专用或国内差旅员工", hidden = true)
  private BigDecimal ticketElectronicSum;
  
  @ApiModelProperty(value = "子单对应原单号\t非必填\t  子单对应原单号 （进项税转出集成报账用）", hidden = true)
  private String detailOriginalWriteoffCode;

//  @ApiModelProperty(value = "",hidden=true)
//  private String witeoffInstanceId;

}